Fix const bug in function git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@113684 91177308-0d34-0410-b5e6-96231b3b80d8 
diff --git a/include/__functional_base b/include/__functional_base index 769979e..6c74032 100644 --- a/include/__functional_base +++ b/include/__functional_base 
@@ -306,7 +306,7 @@  >::type  __invoke(_R (_T::*__f)(_Param...) const, _T1&& __t1, _Arg&& ...__arg)  { - return (_STD::forward<_T>(__t1).*__f)(_STD::forward<_Arg>(__arg)...); + return (_STD::forward<const _T>(__t1).*__f)(_STD::forward<_Arg>(__arg)...);  }    template <class _R, class _T, class _T1, class ..._Param, class ..._Arg> @@ -319,7 +319,7 @@  >::type  __invoke(_R (_T::*__f)(_Param...) volatile, _T1&& __t1, _Arg&& ...__arg)  { - return (_STD::forward<_T>(__t1).*__f)(_STD::forward<_Arg>(__arg)...); + return (_STD::forward<volatile _T>(__t1).*__f)(_STD::forward<_Arg>(__arg)...);  }    template <class _R, class _T, class _T1, class ..._Param, class ..._Arg> @@ -332,7 +332,7 @@  >::type  __invoke(_R (_T::*__f)(_Param...) const volatile, _T1&& __t1, _Arg&& ...__arg)  { - return (_STD::forward<_T>(__t1).*__f)(_STD::forward<_Arg>(__arg)...); + return (_STD::forward<const volatile _T>(__t1).*__f)(_STD::forward<_Arg>(__arg)...);  }    // second bullet